From 02ed5d0c5ccc473e3a8d16a6abab45a0bf5810a0 Mon Sep 17 00:00:00 2001 From: Aki Tuomi Date: Wed, 11 Mar 2026 12:30:32 +0200 Subject: [PATCH] [PATCH 22/24] auth: Move passdb event lifecycle handling to auth_request_passdb_event_(begin|end) Gbp-Pq: Name CVE-2026-27855-2.patch --- src/auth/auth-request.c | 39 +++++++++++++++++++++++++++------------ src/auth/auth-request.h | 3 +++ 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/src/auth/auth-request.c b/src/auth/auth-request.c index f7bf1fb..a1d0cac 100644 --- a/src/auth/auth-request.c +++ b/src/auth/auth-request.c @@ -663,15 +663,10 @@ auth_request_cache_result_to_str(enum auth_request_cache_result result) } } -void auth_request_passdb_lookup_begin(struct auth_request *request) +void auth_request_passdb_event_begin(struct auth_request *request) { struct event *event; - i_assert(request->passdb != NULL); - i_assert(!request->userdb_lookup); - - request->passdb_cache_result = AUTH_REQUEST_CACHE_NONE; - /* use passdb-specific settings during the passdb lookup */ request->set = request->passdb->auth_set; @@ -691,11 +686,35 @@ void auth_request_passdb_lookup_begin(struct auth_request *request) event_set_min_log_level(event, request->passdb->auth_set->verbose ? LOG_TYPE_INFO : LOG_TYPE_WARNING); + array_push_back(&request->authdb_event, &event); +} + +void auth_request_passdb_event_end(struct auth_request *request) +{ + struct event *event = authdb_event(request); + event_unref(&event); + array_pop_back(&request->authdb_event); + + /* restore protocol-specific settings */ + request->set = request->protocol_set; +} + +void auth_request_passdb_lookup_begin(struct auth_request *request) +{ + struct event *event; + + i_assert(request->passdb != NULL); + i_assert(!request->userdb_lookup); + auth_request_passdb_event_begin(request); + + event = authdb_event(request); + + request->passdb_cache_result = AUTH_REQUEST_CACHE_NONE; + e_debug(event_create_passthrough(event)-> set_name("auth_passdb_request_started")-> event(), "Performing passdb lookup"); - array_push_back(&request->authdb_event, &event); } void auth_request_passdb_lookup_end(struct auth_request *request, @@ -713,11 +732,7 @@ void auth_request_passdb_lookup_end(struct auth_request *request, request->passdb_cache_result)); } e_debug(e->event(), "Finished passdb lookup"); - event_unref(&event); - array_pop_back(&request->authdb_event); - - /* restore protocol-specific settings */ - request->set = request->protocol_set; + auth_request_passdb_event_end(request); } void auth_request_userdb_lookup_begin(struct auth_request *request) diff --git a/src/auth/auth-request.h b/src/auth/auth-request.h index ba2070c..7861d6e 100644 --- a/src/auth/auth-request.h +++ b/src/auth/auth-request.h @@ -427,6 +427,9 @@ void auth_request_log_finished(struct auth_request *request); void auth_request_master_user_login_finish(struct auth_request *request); void auth_request_fields_init(struct auth_request *request); +void auth_request_passdb_event_begin(struct auth_request *request); +void auth_request_passdb_event_end(struct auth_request *request); + void auth_request_passdb_lookup_begin(struct auth_request *request); void auth_request_passdb_lookup_end(struct auth_request *request, enum passdb_result result); -- 2.30.2